package bjut.core.postprocessor;

import bjut.core.aware.BeanFactoryAware;
import bjut.core.exception.BeansException;
import bjut.core.factory.BeanFactory;
import bjut.core.factory.DefaultListableBeanFactory;
import bjut.core.property.PropertyValues;

/**
 * @Author: zhuzhiming
 * @Date: 2022/7/1 13:37
 */
public interface InstantiationAwareBeanPostProcessor extends BeanPostProcessor {

    Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException;

    boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException;

    // 在 Bean 对象实例化完成后，设置属性操作之前执行此方法
    PropertyValues postProcessPropertyValues(PropertyValues pvs, Object bean, String beanName) throws BeansException;

}
